// 1. 初始化：检查登录状态 + 初始化播放器
let currentUser = null;

window.onload = () => {
    // 检查登录状态
    currentUser = checkLogin();
    if (currentUser) {
        document.getElementById("user-name").textContent = currentUser.username;
    }

    // 初始化播放器
    initPlayer();

    // 侧边栏切换（移动端）
    document.getElementById("menu-toggle").addEventListener("click", () => {
        document.getElementById("sidebar").classList.toggle("active");
    });

    // 退出登录
    document.getElementById("user-logout").addEventListener("click", () => {
        sessionStorage.removeItem("userInfo");
        window.location.href = "../pages/login.html";
    });

    // 文件选择交互
    const fileDropArea = document.getElementById("file-drop-area");
    const musicFileInput = document.getElementById("music-file");
    const fileNameEl = document.getElementById("file-name");

    // 点击选择文件
    fileDropArea.addEventListener("click", () => {
        musicFileInput.click();
    });

    // 选择文件后显示文件名
    musicFileInput.addEventListener("change", (e) => {
        if (e.target.files.length > 0) {
            fileNameEl.textContent = `已选择：${e.target.files[0].name}`;
        } else {
            fileNameEl.textContent = "";
        }
    });

    // 拖放文件
    fileDropArea.addEventListener("dragover", (e) => {
        e.preventDefault();
        fileDropArea.style.borderColor = "var(--primary)";
    });

    fileDropArea.addEventListener("dragleave", () => {
        fileDropArea.style.borderColor = "var(--border-gray)";
    });

    fileDropArea.addEventListener("drop", (e) => {
        e.preventDefault();
        fileDropArea.style.borderColor = "var(--border-gray)";

        if (e.dataTransfer.files.length > 0) {
            musicFileInput.files = e.dataTransfer.files;
            fileNameEl.textContent = `已选择：${e.dataTransfer.files[0].name}`;
        }
    });

    // 上传表单提交（用原生fetch替代Axios，处理multipart/form-data）
    document.getElementById("upload-form").addEventListener("submit", async (e) => {
        e.preventDefault();
        const title = document.getElementById("title").value;
        const singer = document.getElementById("singer").value;
        const file = musicFileInput.files[0];

        // 基础校验
        if (!file) {
            showToast("请选择音乐文件");
            return;
        }

        // 校验文件大小（30MB以内）
        const maxSize = 30 * 1024 * 1024; // 30MB
        if (file.size > maxSize) {
            showToast("文件大小超过30MB，请选择更小的文件");
            return;
        }

        // 校验文件格式（后端也会二次校验，前端先过滤）
        const validExtensions = [".mp3"];
        const fileExtension = file.name.substring(file.name.lastIndexOf(".")).toLowerCase();
        if (!validExtensions.includes(fileExtension)) {
            showToast("不支持的文件格式，请选择MP3格式");
            return;
        }

        // 构建FormData（文件上传特殊处理）
        const formData = new FormData();
        formData.append("filename", file); // 后端参数名：filename
        formData.append("singer", singer); // 后端参数名：singer

        try {
            // 上传音乐（原生fetch处理multipart/form-data）
            const response = await fetch(`${baseURL}/music/upload`, {
                method: "POST",
                credentials: "include", // 携带cookie
                body: formData // FormData无需设置Content-Type，浏览器自动处理
            });
            const res = await response.json();

            if (res.status === 0) {
                showToast(res.message);
                // 上传成功后重置表单并跳转到主页
                document.getElementById("upload-form").reset();
                fileNameEl.textContent = "";
                setTimeout(() => {
                    window.location.href = "../pages/index.html";
                }, 1500);
            } else {
                showToast(res.message);
            }
        } catch (error) {
            showToast("上传失败，请检查网络或文件格式");
            console.error("上传错误：", error);
        }
    });
};